package collection.list;

import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @author weim
 * @date 18-8-27
 *
 * 线程安全的 ArrayList
 *
 */
public class MyCopyOnWriteArrayList {

    public static void main(String[] args) {

        //默认创建大小为0的数组 不可以指定
        CopyOnWriteArrayList list = new CopyOnWriteArrayList();

        //每次add lock.lock(); 数组扩大1 Arrays.copyOf(elements, len + 1)
        list.add("a");
        list.add("b");
        list.add(null);
        list.add(null);
        System.out.println(list.toString());


        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
//            安全失败  在iterator遍历的时候，更改list结构， 不会抛出异常
            list.add("d");
        }

        System.out.println(list.toString());
    }

}
